package coolq.yaozhenyong.controller;

import java.text.SimpleDateFormat;
import java.util.Date;

import com.forte.qqrobot.anno.Filter;
import com.forte.qqrobot.anno.Listen;
import com.forte.qqrobot.anno.depend.Beans;
import com.forte.qqrobot.beans.messages.msgget.PrivateMsg;
import com.forte.qqrobot.beans.messages.types.GroupAddRequestType;
import com.forte.qqrobot.beans.messages.types.MsgGetTypes;
import com.forte.qqrobot.sender.MsgSender;
import com.forte.qqrobot.utils.CQCodeUtil;

import coolq.yaozhenyong.bean.BoobleansGroup;
import coolq.yaozhenyong.bean.QqPrivateMsgRecord;
import coolq.yaozhenyong.bean.QqUser;
import coolq.yaozhenyong.custom.QqAndHtml;
import coolq.yaozhenyong.custom.SpringContextUtil;
import coolq.yaozhenyong.custom.TimeUtils;
import coolq.yaozhenyong.custom.UpdateGroupList;
import coolq.yaozhenyong.service.BoobleansGroupService;
import coolq.yaozhenyong.service.QqPrivateMsgRecordService;
import coolq.yaozhenyong.service.QqUserService;
@Beans
@Listen(MsgGetTypes.privateMsg)
public class MyPrivateMsgRecordController {
	/****
	 * 监听私聊消息
	 * @param msg
	 */
	@Filter
	public void saveprivateMsgrecprd(PrivateMsg msg) {
		BoobleansGroupService bean = SpringContextUtil.getBean(BoobleansGroupService.class);
		BoobleansGroup byId = bean.getById(2);
		if(byId.getBooleanok().equals("开启")) {
			QqPrivateMsgRecordService service = SpringContextUtil.getBean(QqPrivateMsgRecordService.class);
			QqPrivateMsgRecord record = new QqPrivateMsgRecord();
			try {
				record.setMsg(QqAndHtml.getMsghtml(msg.getMsg()));
			} catch (Exception e) {
				record.setMsg("出错了");
				System.out.println("出错了"+TimeUtils.getStringDate()+"\n\r\t"+msg.getMsg());
			}
			record.setQqnumber(msg.getQQ());
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			record.setTime(df.format(new Date()));
			record.setType(msg.getFont());
			service.save(record);
		}
	}
	public QqUserService QqUserservice = SpringContextUtil.getBean(QqUserService.class);
	/***
	 * 私聊取代码
	 * @param msg
	 * @param msgsender
	 * @param requestType
	 * @param cqCodeUtil
	 */
	@Filter
	public void qudaima(PrivateMsg msg,MsgSender msgsender,GroupAddRequestType requestType,CQCodeUtil cqCodeUtil) {
		if(msg==null||msg.getMsg()==null||msg.getMsg().length()<1) {
			return ;
		}
		
		/** 发送[编号] 即可 同意别人的群邀请 */
		if(msg.getQQ().equals("936642284")&&msg.getMsg().split("复制我同意群邀请&#91;").length>1) {
			String obj1 = msg.getMsg();
			obj1 = obj1.replaceAll("复制我同意群邀请&#91;","");
			obj1 = obj1.replaceAll("&#93;","");
			requestType = GroupAddRequestType.INVITE;
			boolean setGroupAddRequest = msgsender.SETTER.setGroupAddRequest(obj1,requestType, true,obj1);
			if(setGroupAddRequest) {
				//刷新所在的群
				UpdateGroupList.uodate(msgsender, cqCodeUtil);
				msgsender.SENDER.sendPrivateMsg("936642284", "已同意"+obj1);
			}else {
				msgsender.SENDER.sendPrivateMsg("936642284", "未处理"+obj1);
			}
			return;
		}
		if(msg.getMsg().length()>2&&msg.getMsg().equals("取代码")) {
			QqUser one = QqUserservice.query().eq("qqnumber", msg.getQQ()).one();
			if(one!=null) {
				one.setIsgoto(true);
				QqUserservice.updateById(one);
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(), "已开启取代码模式，自动检测你发过来的代码是否包含代码。且返回给您！\n如需要关闭自动取代码模式,请输入：");
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(),"关闭取代码模式");
				return ;
			}else {
				QqUser user = new QqUser();
				user.setName("");
				user.setQqnumber(msg.getQQ());
				user.setIsgoto(true);
				QqUserservice.save(user);
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(), "已开启取代码模式，自动检测你发过来的代码是否包含代码。且返回给您！\n如需要关闭自动取代码模式,请输入：");
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(),"关闭取代码模式");
				return ;
			}
		}
		if(msg.getMsg().length()>6&&msg.getMsg().equals("关闭取代码模式")) {
			QqUser one = QqUserservice.query().eq("qqnumber", msg.getQQ()).one();
			if(one!=null) {
				one.setIsgoto(false);
				QqUserservice.updateById(one);
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(),"已成功关闭取代码模式");
				return ;
			}
		}
		/***
		 * 取代码
		 */
		QqUser one = QqUserservice.query().eq("qqnumber", msg.getQQ()).eq("isgoto", "1").one();
		if(one!=null) {
			
			String[] split = msg.getMsg().split("\\[CQ");
			if(split.length>1) {
				String msgobj = msg.getMsg();
				if(msgobj!=null&&msgobj.length()>0&&msgobj.indexOf("CQ:image")!=-1) {
					msgsender.SENDER.sendPrivateMsg(msg.getQQ(), QqAndHtml.getMsgCq(msgobj) );
					msgsender.SENDER.sendPrivateMsg(msg.getQQ(), "● 上：图片应答使用\n\n● 下：违禁词图片使用" );
				}
				String obj = msgobj.replaceAll("\\[", "&#91;");
				obj = obj.replaceAll("\\]","&#93;");
				obj = obj.replaceAll("取代码","");
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(), obj);
			}else {
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(), "您好，您发的这句话我无法进行处理，你有问题，疑问，请联系我的作者936642284！\r\nhttp://47.101.128.201:8080/qq这是操控台地址！");
			}
			return ;
		}
		if(msg.getMsg().length()>0) {
			switch (msg.getMsg()) {
			case "赞我":
				msgsender.SENDER.sendLike(msg.getQQCode(), 10);
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(), "好，我赞了哦，你可要赞我呀！");
				return;
			case "赞":
				msgsender.SENDER.sendLike(msg.getQQCode(), 10);
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(), "好，我赞了哦，你可要赞我呀！");
				return;
			case "点赞":
				msgsender.SENDER.sendLike(msg.getQQCode(), 10);
				msgsender.SENDER.sendPrivateMsg(msg.getQQ(), "好，我赞了哦，你可要赞我呀！");
				return;
			default:
				break;
			}
		}
		msgsender.SENDER.sendPrivateMsg(msg.getQQ(), "每天私聊（赞我/赞/点赞）可领取10个赞哦！\n\n私聊的各个功能尚在内测中，还未公布，暂时只开放群管功能，群娱乐功能，需要体验机器人的群功能，欢迎加群893778789！");
	}
}
